package universe;

import java.util.ArrayList;

public class Block {

	private  ArrayList<int[][]> matrix; 
	private  int currentPosition;

	
	public Block(ArrayList<int[][]> m){
		if(!m.isEmpty()){
			if(m.size() == 4 ){
				if(m.get(0).length == 4 && m.get(1).length == 4 && m.get(2).length == 4 && m.get(3).length == 4){
					matrix = m;
					//permet de générer une position initiale aléatoire entre 0 et 3
					currentPosition = (int) (Math.random() *4);
				}else System.out.println("pb taille : "+m.get(0).length);	
			}else System.out.println("Problème sur le nombre de positions du bloc");
		}else System.out.println("Attention la matrice pour le bloc est vide");
	}
	
	public void rotate(){
		currentPosition = (currentPosition+1) %4;
	}
	
	public int[][] getMatrix(){
		return matrix.get(currentPosition);
	}
	
	public int getCell(int x, int y){
		return this.getMatrix()[y][x];
		
	}
	
	public int getCurrentPosition(){
		return currentPosition;
	}
	
	public static Block getRandomBlock(){
		int rnd = (int) (Math.random() *7);
		
		switch (rnd){
			case 0: return new Block(Utils.getBlockA());
			case 1: return new Block(Utils.getBlockB());
			case 2: return new Block(Utils.getBlockC());
			case 3: return new Block(Utils.getBlockD());
			case 4: return new Block(Utils.getBlockE());
			case 5: return new Block(Utils.getBlockF());
			default: return new Block(Utils.getBlockG());
		}
	}
	
	//Utilisé pour les tests en mode console
	//NE DOIT PAS ETRE UTILISE POUR LE JEU
	public String toString(){
		String retour="";
		
		int[][] matrix = this.getMatrix();
		for(int j=0; j< matrix.length;j++){
			for(int i=0; i< matrix.length;i++)
				retour = retour + String.valueOf(matrix[j][i]);
			
			retour = retour + "\n";
		}
		return retour;
	}
}
